package com.test;

import java.io.File;

public class PrintProjectStructure {
    public static void main(String[] args) {
// 指定文件位置
        File f = new File(System.getProperty("user.dir") + "/src/main/java/com/xxx/xxx");
// 打印在这个文件下的文件夹;
        System.out.println(f.getName());
// 方法!进入子文件夹中 并打印子文件名
        tree(f, 1);
    }

    private static void tree(File f, int level) {
// 缩进量
        StringBuilder preStr = new StringBuilder();
        for (int i = 0; i < level; i++) {
            if (i == level - 1) {
                preStr.append("└─");
            } else {
// 级别 - 代表这个目下下地子文件夹
                preStr.append("| ");
            }
        }
// 返回一个抽象路径名数组，这些路径名表示此抽象路径名所表示目录中地文件
        File[] childs = f.listFiles();
        if (null != childs && childs.length > 0) {
            for (File child : childs) {
// 打印子文件的名字
                if ("target".equals(child.getName())) {
                    continue;
                }
                if (".git".equals(child.getName())) {
                    continue;
                }
                if (".idea".equals(child.getName())) {
                    continue;
                }
                System.out.println(preStr + child.getName());
// 测试此抽象路径名表示地文件能否是一个目录
                if (child.isDirectory()) {
// 假如子目录下还有子目录，递归子目录调用此方法
                    tree(child, level + 1);
                }
            }
        }
    }
}